home *** CD-ROM | disk | FTP | other *** search
/ Aminet 16 / Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso / Aminet / dev / src / wangisrc.lha / wangi / units / KeyFile.PAS < prev    next >
Pascal/Delphi Source File  |  1995-01-03  |  1KB  |  78 lines

  1. Unit KeyFile;
  2.  
  3. INTERFACE
  4.  
  5. Uses
  6.     AmigaDos, Exec;
  7.  
  8. Const
  9.     UNREG = -1;
  10.     
  11. Type
  12.     pKey = ^tKey;
  13.     tKey = Record
  14.         key_User : String[40];
  15.         key_ID   : LONG;
  16.         key_Chk  : LONG;
  17.     End;
  18.  
  19. Procedure ReadKeyFile(VAR key : tKey; fname : String);
  20. Procedure WriteKeyFile(fname, User : String; ID : LONG);
  21.  
  22. IMPLEMENTATION
  23.  
  24. Procedure ReadKeyFile;
  25.  
  26. Var
  27.     f   : BPTR;
  28.     ok, reg  : Boolean;
  29.     len : LONG;
  30.  
  31. begin
  32.     reg := False;
  33.     fname := fname + #0;
  34.     f := Open(@fname[1], MODE_OLDFILE);
  35.     if f <> NULL then begin
  36.         len := Read_(f,@key, Sizeof(tKey));
  37.         If len = Sizeof(tKey) then begin
  38.             { Validate }
  39.             If ((Length(key.key_User) + key.key_ID) div 2) = key.key_Chk then
  40.                 reg := True;
  41.         End;
  42.         ok := Close_(f);
  43.     End;
  44.     If NOT reg then begin
  45.         with key do begin
  46.             key_User := 'UNREGISTERED';
  47.             key_ID   := UNREG;
  48.         End;
  49.     End;
  50. End; {ReadKeyFile}
  51.  
  52. Procedure WriteKeyFile;
  53.  
  54. Var
  55.     key : tKey;
  56.     f   : BPTR;
  57.     ok  : Boolean;
  58.     len : LONG;
  59.  
  60. Begin
  61.     fname := fname + #0;
  62.     With key do begin
  63.         key_User := 'KEYFILE-LSKKEYFILE-LSKKEYFILE-LSKKEYFILE';
  64.         key_User := User;
  65.         key_ID   := ID;
  66.         key_Chk  := ((Length(key_User) + key_ID) div 2);
  67.     End;
  68.     f := Open(@fname[1], MODE_NEWFILE);
  69.     If f <> NULL then begin
  70.         len := Write_(f, @key, Sizeof(tKey));
  71.         ok := Close_(f);
  72.     End;
  73. End; {WriteKeyFile}
  74.  
  75. End. {KeyFile}
  76.  
  77.  
  78.